/************************************************************************/
/*    Author: Scott Bevin                                               */
/************************************************************************/


#pragma once

#include <vector> 

#include "../XInput/Input.h"
#include "../XMessaging/Message.h"

namespace XF
{
	class EntityComponent;

	class ComponentContainer
	{
	protected:
		std::vector<XF::EntityComponent*> mComponents;
		bool mComponentsInitialized;

	public:
		ComponentContainer();
		ComponentContainer(ComponentContainer &copy);
		virtual ~ComponentContainer();

		void AddComponent(XF::EntityComponent *newComponent);

		void UpdateComponents(double dT);
		bool MessageComponents(const XF::Message& message);
		void HandleInputComponents(double dT, XF::Input* input);

		void InitializeComponents();
	};
}